iT邦幫忙

2022 iThome 鐵人賽

DAY 2
0

Day2 多租戶架構好吃嗎?能給我多少好處?

什麼是多租戶?

多租戶是一種軟體架構。提供多個租戶在同個環境中共享系統環境與應用程式,同時確保各租戶間的資料隔離性。

就像是一間房合租給多個房客,不同房客有共享的客廳、廚房等區域。同時也有各自的獨立房間,

實務上可以想像成一台主機裝了一套系統,不同客戶有共享的資源,同時客戶間的資料隔離不會相互影響。

單租戶與多租戶的差異

單租戶架構

單租戶通常有獨立的硬體與軟體不需與其他人共享,應用的情境主要是以客製化來滿足客戶的特定需求,可以客製化的不只是應用程式,在硬體、網路等方面也可以進行優化調整。

在高度客製化的同時也意味著問題複雜度會提升,出現許多客製需求延伸出來的問題,整體導入也相對複雜與高成本。

多租戶架構

多租戶的硬體、軟體會與其他租戶共享,因此成本較低、資源使用率更高且有更大的運算潛力。而更新核心程式不需要逐個租戶更新,只需要更新一次共享的核心減少大量的重複工作。

而同時共享給多個租戶也代表客製需求要考量到所有租戶而增加難度,在安全性方面因可訪問的入口多所以被攻擊的可能性也會提升。

多租戶架構的隔離方式

  1. 獨立資料庫

    不同租戶各自獨立一個資料庫,資料隔離性最高、性能最好,較容易客製性能與進行資料備份,但因為每個租戶都要安裝一個資料庫相對成本高。

  2. 共享資料庫,獨立 schema

    不同租戶共用一個資料庫,在資料庫底下以不同的 schema 做資料隔離提供了一定的安全性,且在擴展方面也十分容易,不需要新增租戶而安裝一套資料庫。

    此種做法仍有可能被其他租戶影響到,資料備份單個租戶可能會因為部分資料在共享的 schema 中而耗費比獨立資料庫更多的時間。

  3. 共享資料庫,共享 schema

    所有租戶都共用同一個資料庫與同一個 schema ,以不同的租戶代號來進行區分,所需成本最低,但隔離性與安全性皆為三者最差。資料備份為三者中最困難。較適合以成本為主要考量的客戶使用。

多租戶架構的應用心得

單租戶與多租戶架構各有千秋,只要在適合多租戶的情境下,筆者都很推薦使用多租戶架構。

在單租戶架構下,有多少客戶就要裝幾台機器與各項環境,核心程式碼雖是同一套,卻非常容易因為妥協客製需求而走向分歧。且核心升級時要一台一台機器進行更新,只要疏於紀錄或是年代逐漸久遠,客戶越多管理成本就會越大。

而多租戶架構呢?單租戶還在安裝第二套環境的時候,多租戶已經整個導入完5個客戶了!只需要複製一套 schema 再加上基本的參數設定就完成了,大量減少了重複的工作與維護成本,也因為架構上的限制不會輕易對客製需求妥協,專案也會因為統一版本而容易管理。

多租戶架構在開發上雖然會面臨到許多挑戰,但與收穫到的好處可是完全不可比的呢!(挑戰對筆者來說也是一件令人熱血沸騰的好事)

讓我們來用 Django 實現多租戶

我們接下來將使用第二種隔離方式『共享資料庫,獨立 schema 』來進行多租戶架構的開發,使用的資料庫為 PostgreSQL。而什麼是 Django 呢?明天我們就來介紹『 Django?我很好奇! 』


上一篇
Day1 全能住宅改造王,Django 多租戶架構的應用 —— 實作一個電商網站
下一篇
Day3 Django?我很好奇!
系列文
全能住宅改造王,Django 多租戶架構的應用 —— 實作一個電商網站30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言